import requests
import json
class HttpRequestUtils:
    """
    HTTP请求工具类，封装了基本的HTTP请求方法，例如GET、POST等。
    """

    def __init__(self):
        # 初始化一个Session对象，以便在多个请求间保持cookie
        self.session = requests.Session()

    def get(self, url: str, params: dict = None, headers: dict = None) -> requests.Response:
        """
        发送一个GET请求。

        :param url: 请求的URL地址
        :param params: 请求的查询参数，以字典形式提供
        :param headers: 请求头，以字典形式提供
        :return: 响应对象
        """
        response = self.session.get(url, params=params, headers=headers)
        response.raise_for_status()  # 如果状态码为4xx或5xx，抛出异常
        return response

    def post(self, url: str, data: dict = None, json: dict = None, headers: dict = None) -> requests.Response:
        """
        发送一个POST请求。

        :param url: 请求的URL地址
        :param data: 请求的数据，以表单形式提供
        :param json: JSON数据，如果提供此参数，data将被忽略
        :param headers: 请求头，以字典形式提供
        :return: 响应对象
        """
        response = self.session.post(url, data=data, json=json, headers=headers)
        response.raise_for_status()
        return response

    def put(self, url: str, data: dict = None, json: dict = None, headers: dict = None) -> requests.Response:
        """
        发送一个PUT请求。

        :param url: 请求的URL地址
        :param data: 请求的数据，以表单形式提供
        :param json: JSON数据，如果提供此参数，data将被忽略
        :param headers: 请求头，以字典形式提供
        :return: 响应对象
        """
        response = self.session.put(url, data=data, json=json, headers=headers)
        response.raise_for_status()
        return response

    def delete(self, url: str, headers: dict = None) -> requests.Response:
        """
        发送一个DELETE请求。

        :param url: 请求的URL地址
        :param headers: 请求头，以字典形式提供
        :return: 响应对象
        """
        response = self.session.delete(url, headers=headers)
        response.raise_for_status()
        return response

    # ... 你可以继续添加其他HTTP方法，如PATCH、HEAD等。

# 使用示例
if __name__ == "__main__":
    utils = HttpRequestUtils()

    # 发送一个GET请求
    # get_response = utils.get('https://api.example.com/data', {'key': 'value'})
    # print(get_response.text)

    # # 发送一个POST请求
    # post_data = {'username': 'user', 'password': 'pass'}
    # post_response = utils.post('https://api.example.com/login', data=post_data)
    # print(post_response.json())


    post_data = {
            "model": "qwen",
            "messages": [
                {
                    "role": "user",
                    "content": "你是谁？"
                }
            ],
            "stream": False
        }
    
    headers = {
        "Authorization": "Bearer XgqLEvcP14UDVEAXAXp1QW5_tsSrekU*tntMAHELF6sFvJ_vGGhdV43X9CV5fBk20"
    }

    post_response = utils.post('http://10.10.50.138:8000/v1/chat/completions', data=post_data, headers=headers)
    print(post_response.content.decode('utf-8'))
    # raw_text = post_response.content
    # for line in raw_text.splitlines():
    #     try:
    #         json_obj = json.loads(line)
    #         if 'choices' in json_obj:
    #             for choice in json_obj['choices']:
    #                 delta_content = choice['delta']['content']
    #                 print(delta_content.decode('utf-8'))
    #     except json.JSONDecodeError:
    #         continue


